/* ==================================================================   
 * Created [2009-4-27 下午11:32:55] by Jon.King 
 * ==================================================================  
 * TSS 
 * ================================================================== 
 * mailTo:jinpujun@hotmail.com
 * Copyright (c) Jon.King, 2009-2012 
 * ================================================================== 
*/

package com.jinhe.tss.component.dynproperty.support;

import java.util.List;
import java.util.Map;

import com.jinhe.tss.component.dynproperty.entity.PropertyDef;

/** 
 * <p> IRemotePropertyService.java </p> 
 * 动态属性远程接口，供远程调用使用。
 * 
 * @author Jon.King 2008/04/14 10:18:55 
 */
public interface IRemotePropertyService {
    
    /**
     * 导入动态实体以及实体基本属性和模板信息。（远程）
     * @param docXmlStr
     */
    void importDynableEntity(String docXmlStr); 
    
    /**
     * 删除动态属性实体，一并删除其对应的模板以及tab页，基本属性，动态属性，动态属性值。（远程）
     * @param entityCode
     */
    void deleteDynableEntity(String entityCode);
    
    /**
     * 拷贝一个动态实体，为其指定一个新的entityCode。（远程）
     * @param entityCode
     * @param newEntityCode
     */
    void copyDynableEntity(String entityCode, String newEntityCode);
    
    /**
     * 更新动态实体的名称。（远程）
     * 远程注册的源实体名称改了以后，应该调用该方法更新注册动态实体的名称，保持统一。
     * @param entityCode
     * @param newName
     */
    void updateDynableEntityName(String entityCode, String newName);
    
    /**
     * 获取动态实体的XForm表单模板。（远程）
     * @param entityCode
     * @param templateCode
     * @return
     */
    Map<String, String> getXFormTemplate(String entityCode, String xCode);
    
    /**
     * 获取动态实体的Grid模板。（远程）
     * @param entityCode
     * @param templateCode
     * @return
     */
    String getGridTemplate(String entityCode, String gCode);
    
    /****************************************************************************************************
     *********************************************  通讯录用到的  ********************************************
     *****************************************************************************************************/
     /**
      * 根据对象类名获取其属性。（远程）
      * @param entityCode
      * @param isOnlyDyn
      *               是否只获取动态属性
      * @return
      */
     List<PropertyDef> getProperties(String entityCode, boolean isOnlyDyn);
     
     
     /**
      * 将选中的属性拷贝到其他的动态实体下。（远程）
      * @param ids
      * @param entityCode
      */
     void copyProperties(String[] ids, String entityCode);
     
}

